home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / fault-inject.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.0 KB  |  85 lines

  1. #ifndef _LINUX_FAULT_INJECT_H
  2. #define _LINUX_FAULT_INJECT_H
  3.  
  4. #ifdef CONFIG_FAULT_INJECTION
  5.  
  6. #include <linux/types.h>
  7. #include <linux/debugfs.h>
  8. #include <asm/atomic.h>
  9.  
  10. /*
  11.  * For explanation of the elements of this struct, see
  12.  * Documentation/fault-injection/fault-injection.txt
  13.  */
  14. struct fault_attr {
  15.     unsigned long probability;
  16.     unsigned long interval;
  17.     atomic_t times;
  18.     atomic_t space;
  19.     unsigned long verbose;
  20.     u32 task_filter;
  21.     unsigned long stacktrace_depth;
  22.     unsigned long require_start;
  23.     unsigned long require_end;
  24.     unsigned long reject_start;
  25.     unsigned long reject_end;
  26.  
  27.     unsigned long count;
  28.  
  29. #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
  30.  
  31.     struct {
  32.         struct dentry *dir;
  33.  
  34.         struct dentry *probability_file;
  35.         struct dentry *interval_file;
  36.         struct dentry *times_file;
  37.         struct dentry *space_file;
  38.         struct dentry *verbose_file;
  39.         struct dentry *task_filter_file;
  40.         struct dentry *stacktrace_depth_file;
  41.         struct dentry *require_start_file;
  42.         struct dentry *require_end_file;
  43.         struct dentry *reject_start_file;
  44.         struct dentry *reject_end_file;
  45.     } dentries;
  46.  
  47. #endif
  48. };
  49.  
  50. #define FAULT_ATTR_INITIALIZER {                \
  51.         .interval = 1,                    \
  52.         .times = ATOMIC_INIT(1),            \
  53.         .require_end = ULONG_MAX,            \
  54.         .stacktrace_depth = 32,                \
  55.         .verbose = 2,                    \
  56.     }
  57.  
  58. #define DECLARE_FAULT_ATTR(name) struct fault_attr name = FAULT_ATTR_INITIALIZER
  59. int setup_fault_attr(struct fault_attr *attr, char *str);
  60. void should_fail_srandom(unsigned long entropy);
  61. bool should_fail(struct fault_attr *attr, ssize_t size);
  62.  
  63. #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS
  64.  
  65. int init_fault_attr_dentries(struct fault_attr *attr, const char *name);
  66. void cleanup_fault_attr_dentries(struct fault_attr *attr);
  67.  
  68. #else /* CONFIG_FAULT_INJECTION_DEBUG_FS */
  69.  
  70. static inline int init_fault_attr_dentries(struct fault_attr *attr,
  71.                       const char *name)
  72. {
  73.     return -ENODEV;
  74. }
  75.  
  76. static inline void cleanup_fault_attr_dentries(struct fault_attr *attr)
  77. {
  78. }
  79.  
  80. #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */
  81.  
  82. #endif /* CONFIG_FAULT_INJECTION */
  83.  
  84. #endif /* _LINUX_FAULT_INJECT_H */
  85.